// pages/merchant/login/index.js
const apiService = require('../../../utils/api.js');

Page({
  data: {
    merchantAccount: '',
    password: '',
    isLoading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log('商家端登录页面加载', options);
    
    // 埋点统计
    this.trackEvent('merchant_login_page_view', {
      from: options.from || 'unknown',
      timestamp: Date.now()
    });
  },

  /**
   * 账号输入
   */
  onAccountInput(e) {
    this.setData({
      merchantAccount: e.detail.value
    });
  },

  /**
   * 密码输入
   */
  onPasswordInput(e) {
    this.setData({
      password: e.detail.value
    });
  },

  /**
   * 登录
   */
  async onLogin() {
    const { merchantAccount, password } = this.data;

    // 验证输入
    if (!merchantAccount.trim()) {
      wx.showToast({
        title: '请输入商家账号',
        icon: 'none'
      });
      return;
    }

    if (!password.trim()) {
      wx.showToast({
        title: '请输入密码',
        icon: 'none'
      });
      return;
    }

    this.setData({ isLoading: true });

    try {
      // 埋点统计
      this.trackEvent('merchant_login_attempt', {
        account: merchantAccount,
        timestamp: Date.now()
      });

      // 调用云函数进行真实的admin登录验证
      const loginResult = await this.realMerchantLogin(merchantAccount, password);

      if (loginResult.success) {
        // 登录成功
        wx.showToast({
          title: '登录成功',
          icon: 'success'
        });

        // 保存商家端登录状态
        wx.setStorageSync('merchantLoginInfo', {
          account: merchantAccount,
          loginTime: Date.now(),
          isMerchantLogin: true,
          token: loginResult.data?.token,
          adminInfo: loginResult.data?.adminInfo
        });

        // 跳转到商家端首页
        setTimeout(() => {
          wx.redirectTo({
            url: '/pages/merchant/dashboard/index',
            success: () => {
              console.log('跳转到商家端首页成功');
            },
            fail: (error) => {
              console.error('跳转到商家端首页失败:', error);
            }
          });
        }, 1500);

        // 埋点统计
        this.trackEvent('merchant_login_success', {
          account: merchantAccount,
          timestamp: Date.now()
        });

      } else {
        // 登录失败
        wx.showToast({
          title: loginResult.message || '登录失败',
          icon: 'none'
        });

        // 埋点统计
        this.trackEvent('merchant_login_failed', {
          account: merchantAccount,
          reason: loginResult.message,
          timestamp: Date.now()
        });
      }

    } catch (error) {
      console.error('商家端登录错误:', error);
      wx.showToast({
        title: '登录失败，请重试',
        icon: 'none'
      });

      // 埋点统计
      this.trackEvent('merchant_login_error', {
        account: merchantAccount,
        error: error.message,
        timestamp: Date.now()
      });
    } finally {
      this.setData({ isLoading: false });
    }
  },

  /**
   * 真实的商家端登录（调用云函数）
   */
  async realMerchantLogin(account, password) {
    try {
      console.log('调用云函数进行admin登录验证:', { account, password: '***' });
      
      // 直接调用云函数的admin登录接口
      const result = await wx.cloud.callFunction({
        name: 'cloud',
        data: {
          service: 'admin',
          action: 'login',
          name: account,
          pwd: password
        }
      });

      console.log('云函数返回结果:', result);

      // 检查API返回结果
      if (result && result.result && result.result.code === 200) {
        // 登录成功
        return {
          success: true,
          message: '登录成功',
          data: {
            token: result.result.data?.token,
            adminInfo: {
              name: result.result.data?.name,
              type: result.result.data?.type,
              lastLogin: result.result.data?.last,
              loginCount: result.result.data?.cnt
            }
          }
        };
      } else {
        // 登录失败
        const errorMsg = result?.result?.msg || result?.message || '登录失败';
        return {
          success: false,
          message: errorMsg
        };
      }
    } catch (error) {
      console.error('云函数调用失败:', error);
      return {
        success: false,
        message: '网络错误，请重试'
      };
    }
  },

  /**
   * 返回用户端
   */
  backToUser() {
    // 埋点统计
    this.trackEvent('merchant_back_to_user', {
      timestamp: Date.now()
    });

    wx.navigateBack({
      delta: 1,
      success: () => {
        console.log('返回用户端成功');
      },
      fail: () => {
        // 如果无法返回，则跳转到用户端首页
        wx.switchTab({
          url: '/pages/home/index/index',
          success: () => {
            console.log('跳转到用户端首页成功');
          }
        });
      }
    });
  },

  /**
   * 埋点统计
   */
  trackEvent(eventName, params = {}) {
    try {
      // 这里可以集成具体的统计SDK
      console.log('埋点统计:', eventName, params);
      
      // 示例：可以调用统计API
      // analytics.track(eventName, params);
    } catch (error) {
      console.error('埋点统计失败:', error);
    }
  }
});
